#include <stdio.h>

int main(int argc,char const *argv[]) 
{	
	int num =0;
	printf("%d\n",num);
	printf("%d\n",num++);
	printf("%d\n",num);
	printf("%d\n",++num);
	printf("%d\n",num);
	
	
	//printf("%d %d %d\n",num,++num,num++);
	//printf("%d %d %d\n",num,num++,++num);
	//printf("%d %d %d\n",++num,num++,num);
	printf("%d %d\n",num++,num);
	printf("%d %d\n",num,num++);

/*
3&5
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0101
??
0000 0000 0000 0000 0000 0000 0000 0001


-3&5
1000 0000 0000 0000 0000 0000 0000 0011
1111 1111 1111 1111 1111 1111 1111 1100
1111 1111 1111 1111 1111 1111 1111 1101   -3?????
0000 0000 0000 0000 0000 0000 0000 0101    5?????  
??
0000 0000 0000 0000 0000 0000 0000 0101

-8+5
1000 0000 0000 0000 0000 0000 0000 1000
1111 1111 1111 1111 1111 1111 1111 0111
1111 1111 1111 1111 1111 1111 1111 1000  -8?????
0000 0000 0000 0000 0000 0000 0000 0101   5?????
????
1111 1111 1111 1111 1111 1111 1111 1101  ???????λ??1???????????????
1000 0000 0000 0000 0000 0000 0000 0010
1000 0000 0000 0000 0000 0000 0000 0011  ?????? 

*/
	printf("%d\n",3&5);
	printf("%d\n",-100&5);
	printf("%d\n",-8&5);
	//0000 0000 0000 0000 0000 0000 0000 0101  5
	//0000 0000 0000 0000 0000 0000 0001 0100  20
	printf("%d\n",5<<2);
	
	//1000 0000 0000 0000 0000 0000 0000 0101  -5
	//1111 1111 1111 1111 1111 1111 1111 1010
	//1111 1111 1111 1111 1111 1111 1111 1011  -5?????
	//1111 1111 1111 1111 1111 1111 1110 1100  ????2λ
	//1000 0000 0000 0000 0000 0000 0001 0011
	//1000 0000 0000 0000 0000 0000 0001 0100  ??????  -20  
	printf("%d\n",-5<<2);
	
	//0100 0000 0000 0000 0000 0000 0000 0000
	//0000 0000 0000 0000 0000 0000 0000 0000  ????2λ 
	printf("1073741824<<2=%d\n",1073741824<<2);
	
	//0110 0000 0000 0000 0000 0000 0000 0000
	//1000 0000 0000 0000 0000 0000 0000 0000  ??????????? //????2λ,????λ?????1???????????????? 
	//1111 1111 1111 1111 1111 1111 1111 1111  ???? 
	//1000 0000 0000 0000 0000 0000 0000 0000  ??? -2147483648
	printf("1610612736<<2=%d\n",1610612736<<2);
	
	printf("1879048192<<2=%d\n",1879048192<<2);  
	printf("1342177280<<2=%d\n",1342177280<<2);
	
	//1001 1110 0000 0000 0000 0000 0000 0000
	printf("%d\n",-503316480<<2);
	
	//1111 0000 0000 0000 0000 0000 0000 0000   -1879048192?????
	//1000 1111 1111 1111 1111 1111 1111 1111
	//1001 0000 0000 0000 0000 0000 0000 0000   -1879048192?????
	//0100 0000 0000 0000 0000 0000 0000 0000   ??????λ??1073741824 
	printf("-1879048192<<2=%d\n",-1879048192<<2); 
	
	
	//0000 0000 0000 0000 0000 0000 0000 0101  5
	//0000 0000 0000 0000 0000 0000 0000 0001  ???? 2λ 
	printf("%d\n",5>>2);
	
	//1000 0000 0000 0000 0000 0000 0000 0101 -5??? 
	//1111 1111 1111 1111 1111 1111 1111 1010
	//1111 1111 1111 1111 1111 1111 1111 1011 -5????
	//1111 1111 1111 1111 1111 1111 1111 1110 ??????λ??????
	//1000 0000 0000 0000 0000 0000 0000 0001
	//1000 0000 0000 0000 0000 0000 0000 0010 ????????-2 
	printf("%d\n",-5>>2);	
	
	//1000 0000 0000 0000 0000 0000 0000 0001 -1??? 
	//1111 1111 1111 1111 1111 1111 1111 1110
	//1111 1111 1111 1111 1111 1111 1111 1111 -1????
	//1111 1111 1111 1111 1111 1111 1111 1111 ??????λ??????
	//1000 0000 0000 0000 0000 0000 0000 0000
	//1000 0000 0000 0000 0000 0000 0000 0001 ????????-1
	printf("%d\n",-1>>2);
	
	unsigned int n1= 2147483649U;
	printf("%d\n",n1<<2);
	
	unsigned int n2= 2147483649U;
	printf("%d\n",n2>>2);
	
	return 0;
}




